﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CAOS.Entity;
using CAOS.Context;

namespace CAOS.UnityOfWork
{
    public class PapelRepository : GenericRepository<Papel>
    {
        public PapelRepository(CAOSContext context)
            : base(context)
        {
        }

        public override void Insert(Papel entity)
        {
            if (ExistePapel(entity))
            {
                throw new CAOSDALException("Já existe um papel com o nome informado.");
            }

            base.Insert(entity);
        }

        public override void Update(Papel entity)
        {
            if (ExistePapel(entity))
            {
                throw new CAOSDALException("Já existe um papel com o nome informado.");
            }

            base.Update(entity);
        }

        private bool ExistePapel(Papel entity)
        {
            return this.Exists(p => p.PapelID != entity.PapelID //Id diferente
                                    && p.Codigo.Equals(entity.Codigo, StringComparison.InvariantCultureIgnoreCase) //Mesmo nome
                                    && p.Sistema.SistemaID == entity.Sistema.SistemaID); //Mesmo sistema
        }
    }
}
